#define _CRT_SECURE_NO_WARNINGS 1
//int main()
//{
//	f(10);
//	func();
//
//	return 0;
//}

//int main()
//{
//	int a = 0;
//	int b = a;
//	auto c = a;
//	auto d = &a;
//	auto* e = &a;
//	auto& f = a;
//	f++;
//
//	cout << typeid(c).name() << endl;
//	cout << typeid(d).name() << endl;
//	cout << typeid(e).name() << endl;
//	cout << typeid(f).name() << endl;
//
//	return 0;
//}

#include<vector>
#include<string>

// 不能做参数，不能做返回值
//void func(auto e)
//{
//
//}

//auto func(auto e)
//{
//
//}

//int main()
//{
//  auto意义定义对象时，类型较长，用它比较方便
//	vector<string> v;
//	//vector<string>::iterator it = v.begin();
//	auto it = v.begin();
//	// 不可以
//	//auto x;
//
//	//func(5);
//
//	return 0;
//}

//int main()
//{
//	//auto ret = func();
//
//	return 0;
//}

//int main()
//{
//	int array[] = { 1, 2, 3, 4, 5 };
//	for (int i = 0; i < sizeof(array) / sizeof(array[0]); ++i)
//		array[i] *= 2;
//
//	for (int* p = array; p < array + sizeof(array) / sizeof(array[0]); ++p)
//		cout << *p << endl;
//
//	// 依次取数组中数组赋值给e
//	// 自动判断结束，自动++往后走
//	//for (int e : array)
//	for (auto& e : array)
//	{
//		e++;
//		cout << e << " ";
//	}
//	cout << endl;
//
//	for (auto e : array)
//	{
//		cout << e << " ";
//	}
//	cout << endl;
//
//	return 0;
//}

//void TestFor(int array[])
//{
//    for (auto& e : array)
//        cout << e << endl;
//}

//void f(int)
//{
//	cout << "f(int)" << endl;
//}
//
//void f(int*)
//{
//	cout << "f(int*)" << endl;
//}
//
//int main()
//{
//	//int* ptr = NULL;
//	int* ptr = nullptr;
//
//	f(0);
//	//f(NULL);
//	f(nullptr);
//
//	return 0;
//}

// c
//struct Stack
//{
//	int* a;
//	int top;
//	int capacity;
//};
//
//void StackInit(struct Stack* ps);
//void StackPush(struct Stack* ps, int x);

// C++兼容c语言struct的所有用法
// struct同时升级成了类
// 1、类名就是类型，Stack就是类型，不需要加struct
// 2、类里面定义函数
//struct Stack
//{
//	int* a;
//	int top;
//	int capacity;
//
//	void Init()
//	{
//		a = 0;
//		top = 0;
//		capacity = 0;
//	}
//
//	void Push(int x)
//	{
//		//...
//	}
//};
//
//struct Queue
//{
//	// ...
//
//	void Init()
//	{
//
//	}
//};
//
////struct ListNode
////{
////	ListNode* next;
////	int val;
////};
//
//// 20:12继续
//int main()
//{
//	//Stack s2;
//
//	Stack s1;
//	s1.Init();
//	s1.Push(1);
//	s1.Push(2);
//	s1.Push(3);
//	s1.Push(4);
//
//	/*struct Stack s1;
//	StackInit(&s1);
//	StackPush(&s1, 1);
//	StackPush(&s1, 2);
//	StackPush(&s1, 3);*/
//
//	return 0;
//}

//class Stack
//{
//private:
//	int* a;
//	int top;
//	int capacity;
//
//public:
//	void Init()
//	{
//		a = 0;
//		top = 0;
//		capacity = 0;
//	}
